package com.example.d3_annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE, ElementType.METHOD}) // 当前被修饰的注解只能用在类上,方法上
@Retention(RetentionPolicy.RUNTIME) // 控制下面的注解一直保留到运行时
public @interface MyTest3 {
}
/**
 * @Target: 作用：声明被修饰的注解只能在哪些位置使用
 * TYPE，类，接口
 * FIELD, 成员变量
 * METHOD, 成员方法
 * PARAMETER, 方法参数
 * CONSTRUCTOR, 构造器
 * LOCAL_VARIABLE, 局部变量
 */

/**
 * @Retention(RetentionPolicy.RUNTIME) 作用：声明注解的保留周期
 * 1. SOURCE
 * 只作用在源码阶段，字节码文件中不存在。
 * 2. CLASS（默认值）
 * 保留到字节码文件阶段，运行阶段不存在.
 * 3. RUNTIME（开发常用）
 * 一直保留到运行阶段
 */